﻿using Sinacor.Infra.Common.Exceptions;
/*
SINACOR - BMF&Bovespa
Arquivo: ProcessoExportacaoAlocacao.cs
Criado em: 28-jun-2010 14:48:26
Arquiteto Responsável: p-wgeneroso
*/
using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.Core.ProcessManager.Client.UI;
using PSE.ProcessManager.Common.Process;

namespace Sinacor.UI.Bovespa.ImportacaoExportacao.Communication 
{
	public class ProcessoExportacaoAlocacao : BaseCommunicationProcess<Sinacor.Process.Bovespa.Alocacao.Client.Exportacao>  
	{
		#region Construtor

		public ProcessoExportacaoAlocacao(SessionInformation session)
			: base(session)
		{
            this.Process.ExportacaoConcluida += new EventHandler<ProcessEventArgs<Sinacor.Process.Bovespa.Alocacao.ProcessEntity.ExportacaoResultado>>(Process_ExportacaoConcluida);
            this.Connect();
		}

		#endregion

		#region Eventos

        public event Action<Model.ExportacaoResultado> ExportacaoConcluida;

		#endregion

		#region Métodos

		/// 
		/// <param name="model"></param>
		public void ExportarAlocacao(Model.Parameter.FiltroExportacaoAlocacao model)
		{
            Translator.ModelToProcessEntity.ExportacaoAlocacao translatorRequest;

            try
            {
                translatorRequest = new Translator.ModelToProcessEntity.ExportacaoAlocacao();
                this.Process.ExportarAlocacao(translatorRequest.ToFiltroExportacaoAlocacao(model));
            }
            catch (Exception ex)
            {
                base.HandleFault(ex);
            }
		}

        private void Process_ExportacaoConcluida(object sender, ProcessEventArgs<Sinacor.Process.Bovespa.Alocacao.ProcessEntity.ExportacaoResultado> e)
        {
            Translator.ProcessEntityToModel.ExportacaoAlocacao toModelExportacaoAlocacao = new Translator.ProcessEntityToModel.ExportacaoAlocacao();
            
            try
            {
                if (ExportacaoConcluida != null)
                    ExportacaoConcluida(toModelExportacaoAlocacao.ToExportacaoResultado(e.Parameter));
            }
            catch (Exception ex)
            {
                base.HandleFault(ex);
            }
        }

		#endregion
	}
}